<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    const arr = rooms => {
      // 创建已访问的集合
      // visited中存储的是房间号
      const arr1 = new Set();
      const dfs = key => {
        // 访问了当前房间，加入到访问过的集合中
        arr1.add(key);
        // 遍历房间中有的钥匙
        rooms[key].forEach(arr2 => {
          // 若钥匙对应的房间没有访问过，继续访问
          if (!arr1.has(arr2)) {
            dfs(arr2);
          }
        });
      };
      // 进入0号房间
      dfs(0);
      // 判断访问过的房间与房间总数的数量
      return arr1.size === rooms.length;
    };
    console.log(arr([[1], [2], [3], []]));
  </script>
</body>

</html>